import 'package:aio/aio.dart';
import 'package:flutter/cupertino.dart';
import 'package:app/generated/app_strings.dart';

///单位换算
class AppUnitUtils {
  ///获取换算率;与毫米的换算率；其他单位转化为毫米。
  ///unit 其他单位
  static double getRatTomm(String? unit) {
    var unit2 = unit?.trim().toLowerCase();
    if (unit2 == "米" || unit2 == "m") {
      return 1000; //1米等于1000毫秒
    } else if (unit2 == "分米" || unit2 == "分" || unit2 == "dm") {
      return 100; //1分米等于100毫米。
    } else if (unit2 == "厘米" || unit2 == "厘" || unit2 == "cm") {
      return 10; //1厘米等于10毫秒
    } else if (unit2 == "毫米" || unit2 == "毫" || unit2 == "mm") {
      return 1; //1分米等于100毫米。
    }
    return 1;
  }

  ///获取换算率;毫秒转化为其他单位
  ///unit 其他单位
  static double getRatmmToUnit(String? unit) {
    var unit2 = unit?.trim().toLowerCase();
    if (unit2 == "米" || unit2 == "m") {
      return 0.001; //1米等于1000毫秒
    } else if (unit2 == "分米" || unit2 == "分" || unit2 == "dm") {
      return 0.01; //1分米等于100毫米。
    } else if (unit2 == "厘米" || unit2 == "厘" || unit2 == "cm") {
      return 0.1; //1厘米等于10毫秒
    } else if (unit2 == "毫米" || unit2 == "毫" || unit2 == "mm") {
      return 1;
    }
    return 1;
  }

  //毫秒转化为其他的单位。
  //unit 要转化的其他的单位。
  //num 传入的毫米。
  static double? mmtoUnit(String? unit, String? num) {
    if (StringUtils.isNotEmpty(num)) {
      var num2 = num?.trim();
      if (num2 == "0") {
        return 0;
      }
      var rat = getRatmmToUnit(unit);
      try {
        var num3 = double.parse(num2!);
        if (rat == 1) {
          return num3;
        }
        return DecimalUtils.multiply(rat, num3);
      } catch (e) {}
    }
    return 0;
  }

  //其他单位转化为毫秒
  //unit 要转化的其他的单位。
  //num 传入的其他单位数据
  static double? unittomm(String? unit, String? num) {
    if (StringUtils.isNotEmpty(num)) {
      var num2 = num?.trim();
      if (num2 == "0") {
        return 0;
      }
      var rat = getRatTomm(unit);
      try {
        var num3 = double.parse(num2!);
        if (rat == 1) {
          return num3;
        }
        return DecimalUtils.multiply(rat, num3);
      } catch (e) {}
    }
    return 0;
  }

  static String? getStringAs0(String? data) {
    var _Numbers = data?.trim();
    if (_Numbers == "0.0") {
      _Numbers = "0";
    }
    return StringUtils.toStringAsDecimal(_Numbers);
    //return _Numbers ?? "";
  }
}
